package oddCells;

public class Solution {
    public int oddCells(int m, int n, int[][] indices) {
//        int [][]arr = new int[m][n];
//        for (int i = 0; i < indices.length; i++) {
//            int r = indices[i][0];
//            int c = indices[i][0];
//            for (int j = 0; j < n; j++) {
//                arr[r][j]++;
//            }
//            for (int j = 0; j < m; j++) {
//                arr[j][c]++;
//            }
//        }
//        int odd = 0;
//        for (int i = 0; i < m; i++) {
//            for (int j = 0; j < n; j++) {
//                odd+=arr[i][j]%2;
//            }
//        }
//        return odd;

        // 计数优化
        int[] rows = new int[m];
        int[] cols = new int[n];
        for (int i = 0; i < indices.length; i++) {
            rows[indices[i][0]]++;
            cols[indices[i][1]]++;
        }
        int oddX = 0;
        int oddY = 0;
        for (int i = 0; i < m; i++) {
            if ((rows[i] & 1) != 0) {
                oddX++;
            }
        }
        for (int i = 0; i < n; i++) {
            if((rows[i]&1) != 0){
                oddY++;
            }
        }
        return oddX*(n - oddY)+oddY*(m - oddX);
    }
}
